package com.algaworks.cursojsf2.financeiro.converter;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;

import com.algaworks.cursojsf2.financeiro.model.Pessoa;
import com.algaworks.cursojsf2.financeiro.repository.Pessoas;
import com.algaworks.cursojsf2.financeiro.util.Repositorios;

@FacesConverter(forClass=Pessoa.class)
public class PessoaConverter implements Converter{

	private Repositorios repositorios = new Repositorios();
	
	@Override
	public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
		Pessoa retorno = null;
		
		if(arg2 != null && !arg2.equals("")){
			
			Pessoas pessoas = this.repositorios.getPessoas();
			
			retorno = pessoas.porCodigo(new Integer(arg2));
			
			if(retorno==null){
				String descricaoErro = "Pessoa não existe!";
				 FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,descricaoErro,descricaoErro);
				 throw new ConverterException(message);
			}
				
		}
		
		return retorno;
	}

	@Override
	public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
		if(arg2 != null){
			
			Integer codigo = ((Pessoa) arg2).getCodigo(); 
			return codigo == null ? "" : codigo.toString();
			
		}
		return null;
	}
	
}
